package com.xxl.job.core.util;

import java.util.UUID;
import java.util.regex.Pattern;

/**
 * String工具 主要是对StringUtils一些方法进行重写,从而达到更好的应用
 * 
 * @author yzr
 * 
 */
public class StringUtils {

	/**
	 * 一次性判断多个或单个对象为空。
	 * 
	 * @param objects
	 * @author
	 * @return 只要有一个元素为Blank，则返回true
	 */
	public static boolean isBlank(Object... objects) {
		Boolean result = false;
		for (Object object : objects) {
			if (null == object || "".equals(object.toString().trim()) || "null".equalsIgnoreCase(object.toString().trim())) {
				result = true;
				break;
			}
		}
		return result;
	}

	/**
	 * 一次性判断多个或单个对象不为空。
	 * 
	 * @param objects
	 * @author
	 * @return 只要有一个元素不为Blank，则返回true
	 */
	public static boolean isNotBlank(Object... objects) {
		return !isBlank(objects);
	}

	public static boolean isBlank(String... objects) {
		Object[] object = objects;
		return isBlank(object);
	}

	public static boolean isNotBlank(String... objects) {
		Object[] object = objects;
		return !isBlank(object);
	}

	public static boolean isBlank(String str) {
		Object object = str;
		return isBlank(object);
	}

	public static boolean isNotBlank(String str) {
		Object object = str;
		return !isBlank(object);
	}

	public static boolean isInteger(String str) {  
		// TODO 判断是否为整数 是整数返回true,否则返回false 
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");  
        return pattern.matcher(str).matches();  
	}
	
	public static boolean isNumeric(String str){
		// TODO 判断是否为整数
	    Pattern pattern = Pattern.compile("[0-9]*");
	    return pattern.matcher(str).matches();   
	}
	
	public static boolean isNumerics(String s) {
		// TODO 判断是否为整数
	    if (s != null && !"".equals(s.trim()))
	        return s.matches("^[0-9]*$");
	    else
	        return false;
	}   
	
	public static boolean isDigits(String str){
		// TODO	用JAVA自带的函数 判断是否为整数
	   for (int i = str.length();--i>=0;){  
	       if (!Character.isDigit(str.charAt(i))){
	           return false;
	       }
	   }
	   return true;
	}

	/**
	 * 关键信息脱敏处理
	 * @param key
	 * @return
	 */
	public static String handleSensitiveData(String key) {
		int showLength = 6;
		if (StringUtils.isNotBlank(key) &&
				key.length() > showLength) {
			return new StringBuilder(key.substring(0, showLength))
					.append("******")
					.append(key.substring(key.length() - showLength))
					.toString();
		}
		return null;
	}

	/**
	 * 密码脱敏
 	 * @param pwd
	 * @return
	 */
	public static String handleSensitivePwd(String pwd) {
		if (StringUtils.isNotBlank(pwd)) {
			StringBuilder newPwd = new StringBuilder();
			for(int i=0; i< pwd.length(); i++) {
				newPwd.append("*");
			}
			return newPwd.toString();
		}
		return "";
	}

	public static String getUUID() {
		String s = UUID.randomUUID().toString();
		s = s.replaceAll("-", "");
		return s;
		//去掉“-”符号
		//return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24);
	}

}
